From: Jake Wires Date: Tue, 10 Apr 2007 18:40:43 +0000 (-0700) Subject: [TAPDISK] Fix qcow initialization bug. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15252^2~21 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=9a549acc99e635fcafb1d797e59ab28c7b53615b;p=xen.git [TAPDISK] Fix qcow initialization bug. fd_end was being incorrectly initialized upon open, leading to data corruption. Signed-off-by: Jake Wires --- diff --git a/tools/blktap/drivers/block-qcow.c b/tools/blktap/drivers/block-qcow.c index b0822f729d..2e5532a7cb 100644 --- a/tools/blktap/drivers/block-qcow.c +++ b/tools/blktap/drivers/block-qcow.c @@ -949,8 +949,14 @@ int tdqcow_open (struct disk_driver *dd, const char *name, td_flag_t flags) goto fail; } init_fds(dd); - s->fd_end = (final_cluster == 0 ? (s->l1_table_offset + l1_table_size) : - (final_cluster + s->cluster_size)); + + if (!final_cluster) + s->fd_end = s->l1_table_offset + l1_table_size; + else { + s->fd_end = lseek64(fd, 0, SEEK_END); + if (s->fd_end == (off64_t)-1) + goto fail; + } return 0;